import { TYPES } from '@2/app/core/ioc/types';
import { inversionContainer } from './inversion.container';
import { ApiAuth } from '@2/app/core/api/api.auth';
import { UserService } from '@2/app/core/services/user.service';
import { PermissionService } from '@2/app/core/services/permission.service';
import { UserStorage } from '@2/app/core/storage/user.storage';
import { PermissionStorage } from '@2/app/core/storage/permission.storage';
import { AppStorage } from '@2/app/core/storage/app.storage';
import { ApiUser } from '@2/app/core/api/api.user';
import { LocaleStorage } from '@2/app/core/storage/locale.storage';
import { ApiDept } from '@2/app/core/api/api.dept';
// api
const ApiAuth = inversionContainer.get<ApiAuth>(TYPES.ApiAuth);
const ApiUser = inversionContainer.get<ApiUser>(TYPES.ApiUser);
const ApiDept = inversionContainer.get<ApiDept>(TYPES.ApiDept);
// service
const UserService = inversionContainer.get<UserService>(TYPES.UserService);
const PermissionService = inversionContainer.get<PermissionService>(TYPES.PermissionService);
// storage
const UserStorage = inversionContainer.get<UserStorage>(TYPES.UserStorage);
const PermissionStorage = inversionContainer.get<PermissionStorage>(TYPES.PermissionStorage);
const AppStorage = inversionContainer.get<AppStorage>(TYPES.AppStorage);
const LocaleStorage = inversionContainer.get<LocaleStorage>(TYPES.LocaleStorage);
// const MultipleTabStorage = inversionContainer.get<MultipleTabStorage>(TYPES.MultipleTabStorage);
// Subscription
/**
 * 对外暴露依赖注入后服务实现类
 */
export {
  ApiAuth,
  ApiUser,
  ApiDept,
  UserService,
  PermissionService,
  UserStorage,
  PermissionStorage,
  AppStorage,
  LocaleStorage,
  // MultipleTabStorage,
};
